org 0x7c00
[bits 16]
xor ax, ax 
; 初始化段寄存器, 全部设为0

xor ebp,ebp		
mov ebx,ebp
mov ecx,ebp
mov edx,ebp
mov esi,ebp
mov esp,ebp
mov edi,ebp
add ebp,1           ;ebp=1

; 初始化栈指针
mov sp, 0x7c00
mov ax, 0xb800
mov gs, ax
mov ah, 0x75 ;白色背景+洋红字

;延时
DEL1:mov edi,50000000

;输出
mov al, '1'
imul ecx,ebp,80    ;ecx=ebp*80
add ecx,ebx
mov [gs:2*ecx], ax		;al显示在[ebp,ebx]位置
add ah,17

cmp edx,1
je left	;edx=1时，之前是向左

cmp edx,0
je right	;edx=0时，之前是向右

updown:
cmp esi,1	;esi=1时，之前是向上
je up

cmp esi,0	;esi=0时，之前是向下
je down

DEL2:
dec edi
cmp edi,0
jne DEL2
jmp DEL1




;方向
left:
cmp ebx,0
je right
dec ebx
mov edx,1
jmp updown

right:
cmp ebx,79
je left
inc ebx
mov edx,0
jmp updown

up:
cmp ebp,0
je down
dec ebp
mov esi,1
jmp DEL2

down:
cmp ebp,24
je up
inc ebp
mov esi,0
jmp DEL2




jmp $ ; 死循环

times 510 - ($ - $$) db 0
db 0x55, 0xaa